helplongdoc ={
$cmdName -> 
[command0] 
      在前台继续任务
          对于 JOB_SPEC 参数来说和 `fg' 命令等同。继续一个
          停止的或者后台任务。JOB_SPEC 可以指定一个任务
          名字或任务号。在 JOB_SPEC 后加上一个 `&' 将会把
          任务放至后台，就像任务声明被作为 `bg' 命令的参数
          执行一样。
    
          退出状态：
          返回被继续的任务的状态。

[command1] 
      估值条件表达式。
           是内建命令  test 的同义词，但是最后一个参数必须是
           字符 `]'，以匹配起始的 `['。

[command2] 
      在当前 shell 中执行一个文件中的命令。
    
           在当前 shell 中读取并执行 FILENAME 文件中的命令。$PATH 变量中的
           条目被用于寻找包含 FILENAME 文件的目录。如果提供了任何的 ARGUMENTS
           参数，则它们将成为 FILENAME 文件执行时的位置参数。
    
           退出状态：
           返回 FILENAME 文件中最后一个命令的状态；如果 FILENAME 文件不可读则失败。

[command3]  
      空的命令。
           没有效果； 此命令不做任何操作。
    
           退出状态：
           总是成功。

[command4] 
        估值条件表达式。
    
            是内建命令  test 的同义词，但是最后一个参数必须是
             字符 `]'，以匹配起始的 `['。

[command5] 
        执行条件命令。
    
           根据条件表达式 EXPRESSION 的估值返回状态0或1。表达式按照
          `test' 内建的相同条件组成，或者可以有下列操作符连接而成：
    
              ( EXPRESSION ) 返回 EXPRESSION 表达式的值
              ! EXPRESSION  如果 EXPRESSION表达式为假则为真，否则为假
              EXPR1 && EXPR2 如果 EXPR1 和 EXPR2 表达式均为真则为真，否则为假
              EXPR1 || EXPR2 如果 EXPR1 和 EXPR2 表达式中有一个为真则为真，否则为
                             假
    
           当使用 `==' 和 `!=' 操作符时，操作符右边的字符串被用作模式并且执行一个
           匹配。当使用 `=~' 操作符时，操作符右边的字符串被当作正则表达式来进行
           匹配。
    
           操作符 && 和 || 将不对 EXPR2 表达式进行估值，如果 EXPR1 表达式足够确定
           整个表达式的值。
    
           退出状态：
           根据 EXPRESSION 的值为0或1。

[command6] 
      算术 for 循环。
    
           等价于
              (( EXP1 ))
           while (( EXP2 )); do
                命令们
                (( EXP3 ))
           done
           EXP1、EXP2 和 EXP3 都是算术表达式。如果省略任何表达式，
           则等同于使用了估值为1的表达式。
    
           退出状态：
           返回最后执行的命令的状态。
           
[command7] 
      将命令组合为一个单元。
    
           运行组中的命令集合。这是对整个命令集合
           做重定向的方法之一。
    
           退出状态：
           返回最后一个执行的命令的状态。

[set]
    设定或取消设定 shell 选项和位置参数的
    
        改变 shell 选项和位置参数的值，或者显示 shell 变量的
        名称和值。
    
        选项：
        -a  标记修改的或者创建的变量为导出。
        -b  立即通告任务终结。
        -e  如果一个命令以非零状态退出，则立即退出。
        -f  禁用文件名生成(模式匹配)。
        -h  当查询命令时记住它们的位置
        -k  所有的赋值参数被放在命令的环境中，而不仅仅是
            命令名称之前的参数。
        -m  启用任务控制。
        -n  读取命令但不执行
        -o 选项名
            设定与选项名对应的变量：
                allexport    与 -a 相同
                braceexpand  与 -B 相同
                emacs       使用 emacs 风格的行编辑界面
                errexit      与 -e 相同
                errtrace     与 -E 相同
                functrace    与 -T 相同
                hashall      与 -h 相同
                histexpand   与 -H 相同
                history      启用命令历史
                ignoreeof    shell 读取文件结束符时不会退出
                interactive-comments
                            允许在交互式命令中显示注释
                keyword      与 -k 相同
                monitor      与 -m 相同
                noclobber    与 -C 相同
                noexec       与 -n 相同
                noglob       与 -f 相同
                nolog        目前可接受但是被忽略
                notify       与 -b 相同
                nounset      与 -u 相同
                onecmd       与 -t 相同
                physical     与 -P 相同
                pipefail     管道的返回值是最后一个非零返回值的命令的返回结果，
                           或者当所有命令都返回零是也为零。
                posix        改变默认时和 Posix 标准不同的 bash 行为
                           以匹配标准
                privileged   与 -p 相同
                verbose      与 -v 相同
                vi           使用 vi 风格的行编辑界面
                xtrace       与 -x 相同
        -p  无论何时当真实的有效的用户身份不匹配时打开。
            禁用对 $ENV 文件的处理以及导入 shell 函数。
            关闭此选项会导致有效的用户编号和组编号设定
            为真实的用户编号和组编号
        -t  读取并执行一个命令之后退出。
        -u  替换时将为设定的变量当作错误对待。
        -v  读取 shell 输入行时将它们打印。
        -x  执行命令时打印它们以及参数。
        -B  shell 将执行花括号扩展。
        -C  设定之后禁止以重定向输出的方式覆盖常
            规文件。
        -E  设定之后 ERR 陷阱会被 shell 函数继承。
        -H  启用 ! 风格的历史替换。当 shell 是交互式的
            时候这个标识位默认打开。
        -P  设定之后类似 cd 的会改变当前目录的命令不
            追踪符号链接。
        -T  设定之后 DEBUG 陷阱会被 shell 函数继承。
        --  任何剩余的参数会被赋值给位置参数。如果没
            有剩余的参数，位置参数不会被设置。
        -   任何剩余的参数会被赋值给位置参数。
            -x 和 -v 选项已关闭。
    
        使用 + 而不是 - 会使标志位被关闭。标志位也可以在
        shell 被启动时使用。当前的标志位设定可以在 $- 变
        量中找到。剩余的 ARG 参数是位置参数并且是按照
        $1, $2, .. $n 的顺序被赋值的。如果没有给定 ARG
        参数，则打印所有的 shell 变量。
    
        退出状态：
        返回成功除非使用了无效的参数。
[read] 
    从标准输入读取一行并将其分为不同的域。
    
        从标准输入读取单独的一行，或者如果使用了 -u 选项，从文件描述符 FD 中读
        取。
        该行被分割成域，如同词语分割一样，并且第一个词被赋值给第一个 NAME 变量，
        第二
        个词被赋值给第二个 NAME 变量，如此继续，直到剩下所有的词被赋值给最后一个 
        NAME
        变量。只有 $IFS 变量中的字符被认作是词语分隔符。
    
        如果没有提供 NAME 变量，则读取的行被存放在 REPLY 变量中。
    
        选项：
           -a array  将词语赋值给 ARRAY 数组变量的序列下标成员，从零开始
           -d delim  持续读取直到读入 DELIM 变量中的第一个字符，而不是换行符
           -e  使用 Readline 获取行
           -i text  使用 TEXT 文本作为 Readline 的初始文字
           -n nchars  读取 nchars 个字符之后返回，而不是等到读取换行符。
                      但是分隔符仍然有效，如果遇到分隔符之前读取了不足 nchars 个字符。
           -N nchars  在准确读取了 nchars 个字符之后返回，除非遇到文件结束符或者读
                      超时，任何的分隔符都被忽略
           -p prompt  在尝试读取之前输出 PROMPT 提示符并且不带换行符
           -r  不允许反斜杠转义任何字符
           -s  不回显终端的任何输入
           -t timeout  如果在 TIMEOUT 秒内没有读取一个完整的行则超时并且返回失
                       败。TMOUT 变量的值是默认的超时时间。TIMEOUT 可以是小数。
                       如果 TIMEOUT 是 0，那么仅当在指定的文件描述符上输入有效的时候，
                       read 才返回成功；否则它将立刻返回而不尝试读取任何数据。
                       如果超过了超时时间，则返回状态码大于 128
           -u fd  从文件描述符 FD 中读取，而不是标准输入
    
         退出状态：
         返回码为零，除非遇到了文件结束符、读超时（且返回码不大于128）、
         出现了变量赋值错误或者无效的文件描述符作为参数传递给了 -u 选项。

[type] 
    显示命令类型的信息。
    
        对于每一个 NAME 名称，指示如果作为命令它将如何被解释。
    
        选项：
           -a  显示所有包含名称为 NAME 的可执行文件的位置；
               包括别名、内建和函数。仅当 `-p' 选项没有使用时
           -f  抑制 shell 函数查询
           -P  为每个 NAME 名称惊醒 PATH 路径搜索，即使它是别名、
               内建或函数，并且返回将被执行的磁盘上文件的名称。
           -p  返回将被执行的磁盘上文件的名称，或者当 `type -t NAME'
               不返回 `file' 时，不返回任何值。
           -t  返回下列词中的任何一个 `alias'、`keyword'、
               `function'、`builtin'、`file' 或者 `'，相应地如果 NAME 是
               一个别名、shell 保留字、shell 函数、shell 内建、
               磁盘文件或没有找到。
    
        参数：
             NAME  将要解析的命令。
    
        退出状态：
        返回成功，除非使用了无效的选项或者 NAME 名称为只读。

[trap] 
    对信号和其他事件设陷阱。
        
        定义一个处理器，在 shell 接收到信号和其他条件下执行。
        
        ARG 参数是当 shell 接收到 SIGNAL_SPEC 信号时读取和执行的命令。
        如果没有指定 ARG 参数 (并且只给出一个 SIGNAL_SPEC 信号) 或者
        ARG 参数为
        `-'，每一个指定的参数会被重置为原始值。如果 ARG 参数是一个空串，则每一
        个
        SIGNAL_SPEC 信号会被 shell 和它启动的命令忽略。
        
        如果一个 SIGNAL_SPEC 信号是 EXIT (0) ，则 ARG 命令会在 shell 退出时被
        执行。如果一个 SIGNAL_SPEC 信号是 DEBUG，则 ARG命令会在每一个简单命
        令之前执行。
        
        如果不提供参数，trap 打印列表显示每一个与每一个信号相关联的命令。
        
        选项：
          -l  打印一个信号名称和它们对应的编号的列表
          -p  打印与每个 SIGNAL_SPEC 信号相关联的陷阱命令
        
        每一个 SIGNAL_SPEC 信号可以是 <signal.h> 中的信号名称或者信号编号。
        信号名称大小写敏感且可以使用 SIG 前缀。信号可用 \kill -信号 $$\
        发送给 shell。
        
        返回成功，除非使用了无效的选项或者 SIGSPEC。

[alias] 
    定义或显示别名。
        
        不带参数时，`alias' 以可重用的格式
        `alias 名称=值'在标准输出设备上打印别名列表。
        
        否则，对于每个给定值的名称定义一个别名。
        值末尾的空格会使下一个词被检测作为别名替换展开。
        
        选项：
          -p  以可重用的格式打印所有的已定义的别名
        
        退出状态：
        除非一个没有定义的名字被作为参数提供，否则 alias 
        返回值为真。

[unalias] 
    从别名定义列表中删除每一个“名字”。
        
        选项：
          -a  删除所有的别名定义
        
        返回成功，除非“名字”不是一个已存在的别名。

[break] 
    退出 for、while 或 until 循环
        
        退出一个 FOR、WHILE 或 UNTIL 循环。如果指定了N，则跳出N重
        循环
        
        退出状态：
        退出状态为0除非 N 不大于或等于 1。

[continue] 
    继续 for、while 或 until 循环。
        
        继续当前 FOR、WHILE 或 UNTIL 循环的下一步。
        如果指定了 N， 则继续当前的第 N 重循环。
        
        退出状态：
        退出状态为 0 除非 N 不大于或等于1。

[builtin] 
    执行 shell 内建。
        
        带参数 ARGs 执行 SHELL-BUILTIN 内建，并且不做命令查询
        在希望以 shell 函数的形式来重新实现 shell 内建，
        并且希望在函数之内执行该 shell 内建的情况下有用处。
        
        退出状态：
        以 SHELL-BUILTIN 内建的退出状态为准，或者如果 SHELL-BUILTIN 不是一个
        shell 内建时为假。

[caller] 
    返回当前子调用的上下文。
        
        不带有 EXPR 时，返回 $line $filename。带有 EXPR 时，返回
        $line $subroutine $filename；这个额外的信息可以被用于提供
        栈追踪。
        
        EXPR 的值 显示了到当前调用帧需要回去多少个调用帧；顶部帧
        是第 0 帧。
        
        退出状态：
        除非 shell 不在执行一个 shell 函数或者 EXPR 无效，否则返回结
        果为0。

[cd]
    改变 shell 工作目录。
        
        改变当前目录至 DIR 目录。默认的 DIR 目录是 shell 变量 HOME
        的值。
        
        变量 CDPATH 定义了含有 DIR 的目录的搜索路径，其中不同的目录名称由冒号 (:)
        分隔。
        一个空的目录名称表示当前目录。如果要切换到的 DIR 由斜杠 (/) 开头，则 
        CDPATH
        不会用上变量。
        
        如果路径找不到，并且 shell 选项 `cdable_vars' 被设定，则参数词被假定为一
        个
        变量名。如果该变量有值，则它的值被当作 DIR 目录。
        
        选项：
            -L  强制跟随符号链接: 在处理 `..' 之后解析 DIR 中的符号链接。
            -P  使用物理目录结构而不跟随符号链接: 在处理 `..' 之前解析 DIR 中的符
        号链接。
            -e  如果使用了 -P 参数，但不能成功确定当前工作目录时，返回非零的返回
        值。
            -@  在支持拓展属性的系统上，将一个有这些属性的文件当作有文件属性的目
        录。
        
        默认情况下跟随符号链接，如同指定 `-L'。
        `..' 使用移除向前相邻目录名成员直到 DIR 开始或一个斜杠的方式处理。
        
        退出状态：
        如果目录改变，或在使用 -P 选项时 $PWD 修改成功时返回 0，否则非零。
        
[pwd]
    打印当前工作目录的名字。
        
        选项：
          -L  打印 $PWD 变量的值，如果它包含了当前的工作目录
          -P  打印当前的物理路径，不带有任何的符号链接
        
        默认情况下，`pwd' 的行为和带 `-L' 选项一致
        
        退出状态：
        除非使用了无效选项或者当前目录不可读，否则返回状态为0。

[true]
    空的命令。
        
        没有效果； 此命令不做任何操作。
        
        退出状态：
        总是成功。
        
[shopt]  
    设定和取消设定 shell 选项。
        
        改变每个 shell 选项 OPTNAME 的设定。不带参数时，
        列出每个提供的 OPTNAME，否则列出所有 shell 选项；
        同时标注每一个选项是否被设定。
        
        选项：
          -o  限制 OPTNAME 为定义用于`set -o' 的选项
          -p  打印每个 shell 选项并标注它的状态。
          -q  抑制输出
          -s  启用(设定)每个 OPTNAME 选项
          -u  禁用(取消设定)每个 OPTNAME 选项
        
        退出状态：
        如果 OPTNAME 选项被启用则返回成功；如果是
        无效的选项或 OPTNAME 被禁用则失败。   

[false] 
    返回一个不成功的结果。
        
        退出状态：
        总是失败。

[command] 
    执行一个简单命令或者显示命令的相关信息。
       
       带 ARGS 参数运行 COMMAND 命令且抑制 shell 函数查询，或显示
       指定的 COMMAND 命令的信息。可以在存在相同名称的函数定义的
       情况下用于启动磁盘上的命令。
       
       选项：
         -p  使用 PATH 变量的一个默认值以确保所有的标准工具都能被找到。
         -v  打印 COMMAND 命令的描述，和 `type' 内建相似
         -V  打印每个 COMMAND 命令的详细描述
       
       退出状态
       返回 COMMAND 命令的返回状态，或者当找不到 COMMAND 命令时失败。

[echo] 
    将参数写到标准输出。
       
       在标准输出上，显示用空格分割的 ARG 参数后跟一个换行。
       
       选项：
         -n  不要追加换行
         -e  启用下列反斜杠转义的解释
         -E  显式地抑制对于反斜杠转义的解释
       
       `echo' 对下列反斜杠字符进行转义：
         \a  警告(响铃)
         \\b  退格
         \\c  抑制更多的输出
         \\e  转义字符
         \\f  换页字符
         \\t换行
         \\r\t回车
         \\t\t横向制表符
         \\v\t纵向制表符
         \\\\\t反斜杠
         \\0nnn  以 NNN（八进制）为 ASCII 码的字符。NNN 可以是 0 到 3 个八进制
         位
         \\xHH  以 HH（十六进制）为值的八比特字符。HH 可以是一个或两个十六进制
         位
         \\uHHHH  以 HHHH（十六进制）为值的 Unicode 字符。HHHH 可以是一个到
             四个十六进制位。
         \\UHHHHHHHH 以 HHHHHHHH（十六进制）为值的 Unicode 字符。
             HHHHHHHH 可以是一到八个十六进制位。

       退出状态：
       返回成功除非有写错误发生。

       写参数至标准输出设备。
       
       在标准输出设备上显示 ARGs 参数和一个换行。
       
       选项：
         -n  不附加换行
       
       退出状态：
       除非写错误发生，否则返回成功。

[enable] 
    启用和禁用 shell 内建。
        
        启用和禁用 shell 的内建命令。禁用使您能够执行一个和内建
        命令同名的磁盘上的命令，而无须使用完整的路径名。
        
        
        选项：
          -a  打印一个内建的列表，并显示其中每一个是否启用
          -n  禁用每一个 NAME 内建或者显示一个被禁用的内建的列表
          -p  以可重用的格式打印一个内建的列表
          -s  仅打印Posix `special'  内建的名称
        
        控制动态加载的选项：
          -f  从共享对象 FILENAME 文件中加载 NAME 内建
          -d  删除以 -f 选项加载的内建
        
        不带选项时，每一个 NAME 内建都被启用。
        
        如果要使用 $PATH 中找到的 `test' 而不是 shell 内建的版本，
        输入 `enable -n test'。
        
        退出状态：
        返回成功，除非 NAME 不是一个 shell 内建或者有错误发生。

[getopts] 
    解析选项参数。
        
        getopts 被 shell 过程用于解析可定位的参数作为选项。
        
        
        OPTSTRING 字符串包含待识别的选项字母；如果一个字母后面跟
        着分号，则该选项需要一个参数，而该参数应用空格与选项分开。
        
        
        每次启动时，getopts 会将下一个选项放到 shell 变量 $name
        中，如果 name 变量不存在则先将其初始化，而下一个待处
        理的参数序号放入 shell 变量 OPTIND 中。OPTIND 变量在每
        次 shell 或者 shell 脚本启动时都被初始化为1。当一个选项要
        求有一个参数时，getopts 将参数放入 shell 变量 OPTARG
        中。
        
        getopts 有两种报告错误的方法。如果 OPTSTRING 变量的第
        一个字符是冒号，getopts 使用沉默错误报告。在这种模式
        下，不会打印错误消息。如果看到了一个无效的选项，
        getopts 将找到的选项字符放至 OPTARG 变量中。如果一个必
        须的选项没有找到，getopts 放一个 ':' 到 NAME 变量中并且设
        置 OPTARG 变量为找到的选项字符。如果 getopts 不在沉默模
        式中，并且遇到了一个无效的选项，getopts 放置一个 '?' 到 NAME 
        变量中并且取消设定 OPTARG变量。如果必须的选项没有找到，
        一个'?'会被放入 NAME变量中，OPTARG 将被取消设定，并且会
        打印一个诊断信息。
        
        如果 shell 变量 OPTERR 的值为0，getopts 禁用
        错误信息的打印，即使 OPTSTRING 变量的第一个字符不是一
        个冒号。OPTERR 的默认值为1.
        
        getopts 通常解析可定位的参数($0 - $9)，不过如果提供了
        更多的参数，它们反而会被解析。
        
        退出状态：
        如果一个选项被找到则返回成功；如果遇到了选项的结尾或者
        有错误发生则返回失败。

[exec]  
    使用指定命令替换 shell。
        
        执行 COMMAND 命令，以指定的程序替换这个 shell。
        ARGUMENTS 参数成为 COMMAND命令的参数。如果
        没有指定COMMAND 命令，则任何的重定向在当前 shell 中生效。
        
        选项：
          -a 名称  作为第0个参数传递给 COMMAND 命令
          -c    在一个空环境中执行 COMMAND 命令
          -l    在COMMAND 命令的第0个参数中加一个短线
        
        如果命令不能被执行，则退出一个非交互式的 shell，除非
        shell 选项`execfail' 已经设定。
        
        退出状态：
        返回成功除非 COMMAND 命令没有找到或者出现一个重定向错误。

[exit] 
    退出shell。
        
        以状态 N 退出 shell。  如果 N 被省略，则退出状态
        为最后一个执行的命令的退出状态。

[logout] 
    退出一个登录 shell.
        
        以状态 N 退出一个登录 shell。如果不在登录 shell 中执行，则
        返回一个错误。

[fc] 
     从历史列表中显示或者执行命令。
        
        fc 被用于从历史列表中列出或者重新编辑并执行命令。
        FIRST 和 LAST 变量可以是数字用于指定范围，或者 FIRST 可以是
        字符串，意味着以这个字符串打头的最近的一个命令。
        
        
        选项：
          -e ENAME  选择使用哪个编辑器。默认的是 FCEDIT, 然后是 EDITOR，
            然后是 vi
          -l   列出行而不编辑
          -n  列举时省略行号
          -r  反转行的顺序(最新行在前)
        
        用 `fc -s [模式=替换 ...] [命令]' 的格式，COMMAND 命令会在 OLD=NEW
        替换之后被重新执行。
        
        r='fc -s' 是一个有用的别名，这样的话输入 `r cc'会执行最后一个以 `cc'
        开头的命令，输入 `r'会重新执行最后一个命令。
        
        
        退出状态：
        返回成功，或者执行的命令的状态；如果错误发生则返回非零。

[fg] 
    将任务移至前台。
        
        将以 JOB_SPEC 标识的任务放至前台，使其成为
        当前任务。如果 JOB_SPEC 不存在，shell 观念中的当前任务 
        将被使用。
        
        退出状态：
        放至前台的命令状态，或者当错误发生时为失败。
        
[bg] 
    移动任务至后台。
        
        将 JOB_SPEC 标识的任务放至后台，就像它们
        是带 `&' 启动的一样。如果 JOB_SPEC 不存在，shell 观念中的
        当前任务将会被使用。
        
        退出状态：
        返回成功除非任务管理没有启用或者错误发生。

[hash] 
    记住或显示程序位置。
        
        确定并记住每一个给定 NAME 名称的命令的完整路径。
        如果不提供参数，则显示已经记住的命令的信息。
        
        选项：
          -d    忘记每一个已经记住的 NAME 的位置
          -l    以可作为输入重用的格式显示
          -p pathname  使用 pathname 路径作为 NAME 命令的全路径
          -r    忘记所有记住的位置
          -t    打印记住的每一个 NAME 名称的位置，如果指定了多个
            NAME 名称，则每个位置前面会加上相应的 NAME 名称
            
        参数：
          NAME    每个 NAME 名称会在 $PATH 路径变量中被搜索，并且添加到记住的命
        令
        列表中。
        
        退出状态：
        返回成功，除非 NAME 命令没有找到或者使用了无效的选项。
        
[help] 
    显示内建命令的相关信息。
        
        显示内建命令的简略信息。如果指定了 PATTERN 模式，
        给出所有匹配 PATTERN 模式的命令的详细帮助，否则打
        印一个帮助主题列表
        
        选项：
          -d  输出每个主题的简短描述
          -m  以伪 man 手册的格式显示使用方法
          -s  为每一个匹配 PATTERN 模式的主题仅显示一个用法
          简介
        
        参数：
          PATTERN  指定帮助主题的模式
        
        退出状态：
        返回成功，除非未找到 PATTERN 模式没有找到或者使用了无效选项。

[history] 
    显示或操纵历史列表。
        
        带行号显示历史列表，将每个被修改的条目加上 `*' 前缀。
        参数 N 会仅列出最后的 N 个条目。
        
        选项：
          -c  删除所有条目从而清空历史列表。
          -d 偏移量  从指定位置删除历史列表。负偏移量将从历史条目末尾
            开始计数
        
          -a  将当前会话的历史行追加到历史文件中
          -n  从历史文件中读取所有未被读取的行
            并且将它们附加到历史列表
          -r  读取历史文件并将内容追加到历史列表中
          -w  将当前历史写入到历史文件中
        
          -p  对每一个 ARG 参数展开历史并显示结果，而不存储到历史列表中
          -s  以单条记录追加 ARG 到历史列表中
        
        如果给定了 FILENAME 文件名，则它将被作为历史文件。否则
        如果 $HISTFILE 变量有值的话使用之，不然使用 ~/.bash_history 文件。
        
        如果 $HISTTIMEFORMAT 变量被设定并且不为空，它的值会被用于
        strftime(3) 的格式字符串来打印与每一个显示的历史条目想关联的
        时间戳，否则不打印时间戳。
        
        退出状态：
        返回成功，除非使用了无效的选项或者发生错误。
      
[jobs] 
    显示任务状态。
        
        列出活动的任务。JOBSPEC 限制仅输出指定的任务。
        不带选项时，所有活动任务的状态都会显示。
        
        选项：
          -l  在正常信息基础上列出进程号
          -n  仅列出上次通告之后改变了状态的进程
          -p  仅列出进程号
          -r  限制仅输出运行中的任务
          -s  限制仅输出停止的任务
        
        如果使用了 -x 选项，ARG 参数中的所有任务声明会被替换为该任务
        的进程组头领的进程号，然后执行 COMMAND 命令。
        
        退出状态：
        返回成功，除非使用了无效的选项或者有错误发生。
        如果使用 -x 选项，则返回 COMMAND 命令的退出状态。

[disown] 
    从当前 shell 中删除任务。
        
        从活动任务表中删除每一个 JOBSPEC 参数。不带任何
        JOBSPEC 参数时，shell 使用观念中的当前任务。
        
        选项：
          -a  如果不提供 JOBSPEC 参数，则删除所有任务
          -h  标识每个 JOBSPEC 任务，从而当 shell 接收到 SIGHUP
            信号时不发送 SIGHUP 给指定任务
          -r  仅删除运行中的任务
        
        退出状态：
        返回成功除非使用了无效的选项或者 JOBSPEC 声明。

[kill] 
    向一个任务发送一个信号。
        
        向以 PID 进程号或者 JOBSPEC 任务声明指定的进程发送一个以
        SIGSPEC 信号声明或 SIGNUM 信号编号命名的信号。如果没有指定
        SIGSPEC 或 SIGNUM，那么假定发送 SIGTERM 信号。
        
        选项：
          -s sig  SIG 是信号名称
          -n sig  SIG 是信号编号
          -l  列出信号名称；如果参数后跟 `-l'则被假设为信号编号，
            而相应的信号名称会被列出
        
        Kill 成为 shell 内建有两个理由：它允许使用任务编号而不是进程号，
        并且在可以创建的进程数上限达到是允许进程被杀死。
        
        退出状态：
        返回成功，除非使用了无效的选项或者有错误发生。
    
[let] 
    估值算术表达式。
        
        将每个 ARG 参赛作为算术表达式来估值。估值的计算以定宽的整
        数完成，不带溢出检测，不过除 0 是被置陷阱的并且会报一个错
        误。下列操作符被按照相同的算术优先级组合。列表的顺序按照
        优先级从高至低。
        
            id++, id--       变量后置加，后置减
            ++id, --id       变量前置加，前置减
            -, +             一元减法，一元加法
            !, ~             逻辑和位取反
            '**'              指数
            '*', /, '%'          乘法，除法，取余数
            +, -             增加，减少
            <<, >>           向左和向右按位移位
            <=, >=, <, >     比较
            ==, !=           等于，不等于
            &                按位与
            ^                按位异或
            |                按位或
            &&               逻辑与
            ||               逻辑或
            expr ? expr : expr
                             条件操作符
            =, *=, /=, %=,
            +=, -=, <<=, >>=,
            &=, ^=, |=        赋值
        
        Shell 变量允许作为操作数。表达式中的变量的名称会被取代以值
        (强制转换为定宽的整数)。表达式中的变量不需要打开整数属性。
        
        操作符按照优先级进行估值。括号中的子表达式将被先估值，并可取代上述表达式
        规则。
        
[shift] 
    移位位置参数。
        
        重命名位置参数 $N+1、$N+2 ... 到 $1、$2 ...  如果没有给定 N，
        则假设为1.
        
        退出状态：
        返回成功，除非 N 为负或者大于 $#。
        返回 N，或者如果 shell 不在执行一个函数或引用脚本时，失败。

[suspend] 
    挂起 shell 执行。
        
        挂起 shell 的执行直到收到 SIGCONT 信号。
        登录 shell 不可以被挂起，除非强制执行。
        
        选项：
          -f 强制挂起，即使是登录 shell。
        
        退出状态：
        返回成功，除非没有启用任务控制或者有错误发生。
        
[eval] 
    对条件表达式进行估值。
        
        根据 EXPR 表达式的估值以状态 0 (真) 或 1 (伪) 退出。
        表达式可以是一元或者二元的。一元表达式通常用于检测
        文件状态。同时还有字符串操作符和数字比较操作符。
        
        文件操作符：
        
          -a 文件        如果文件存在则为真。
          -b 文件        如果文件为块特殊文件则为真。
          -c 文件        如果文件为字符特殊文件则为真。
          -d 文件        如果文件为目录则为真。
          -e 文件        如果文件存在则为真。
          -f 文件        如果文件存在且为常规文件则为真。
          -g 文件        如果文件的组属性设置打开则为真。
          -h 文件        如果文件为符号链接则为真。
          -L 文件        如果文件为符号链接则为真。
          -k 文件        如果文件的粘滞 (sticky) 位设定则为真。
          -p 文件        如果文件为命名管道则为真。
          -r 文件        如果文件对于您是可读的则为真。
          -s 文件        如果文件存在且不为空则为真。
          -S 文件        如果文件是套接字则为真。
          -t 文件描述符   如果文件描述符在一个终端上打开则为真。
          -u 文件        如果文件的用户数行设置打开则为真。
          -w 文件        如果文件对您是可写的则为真
          -x 文件        如果文件对您是可执行的则为真。
          -O 文件        如果文件是被您所有的则为真。
          -G 文件        如果文件被您的组所有则为真。
          -N 文件        如果文件上次被读取之后修改过则为真。
        
          FILE1 -nt FILE2  如果 file1 文件新于 file2 文件则为真(根据
                           修改日期)。
        
          FILE1 -ot FILE2  如果 file1 文件旧于 file2 文件则为真。
        
          FILE1 -ef FILE2  如果 file1 文件是 file2 文件的硬链接则为真。
        
        字符串操作符
        
          -z 字符串      如果字符串为空则为真。
        
          -n 字符串
             字符串      如果字符串不为空则为真。
        
          STRING1 = STRING2
                         如果 string1 和 string2 字符串相同则为真。
          STRING1 != STRING2
                         如果 string1 和 string2 字符串不相同则为真。
          STRING1 < STRING2
                         如果按字典排序 string1 在 string2 串之前则为真。
          STRING1 > STRING2
                         如果按字典排序 string1 在 string2 串之前则为真。
        
        其他操作符：
        
          -o 选项        如果指定 shell 选项启用则为真。
          -v VAR         如果指定 Shell 变量 VAR 已赋值则为真。
          -R VAR         如果指定 Shell 变量 VAR 已赋值且为名称引用则为真。
          ! EXPR         如果表达式 expr 为假则为真。
          EXPR1 -a EXPR2 如果 expr1 和 expr2 都为真则为真。
          EXPR1 -o EXPR2 如果 expr1 和 expr2 有一个为真则为真。
        
          arg1 OP arg2   算术测试。OP操作符可以是 -eq、-ne、
                         -lt、-le、-gt、或 -ge 中的一个。
        
        二元算术操作返回真，如果 ARG1 参数等于、不等于、
        小于、小于等于、大于、或者大于等于 ARG2 参数。
        
        退出状态：
        如果 EXPR 表达式估值为真则返回成功；如果 EXPR 表达式估值
        为假或者使用了无效的参数则返回失败。

[times] 
    显示进程时间
        
        打印 shell 及其所有子进程的累计用户空间和
        系统空间执行时间。
        
        退出状态
        总是成功。
        
[ulimit] 
    修改 shell 资源限制。
        
        在允许此类控制的系统上，提供对于 shell 及其创建的进程所可用的
        资源的控制。
        
        选项：
          -S  使用软 (`soft') 资源限制
          -H  使用硬 (`hard') 资源限制
          -a  所有当前限制都被报告
          -b  套接字缓存尺寸
          -c  创建的核文件的最大尺寸
          -d  一个进程的数据区的最大尺寸
          -e  最高的调度优先级 (`nice')
          -f  有 shell 及其子进程可以写的最大文件尺寸
          -i  最多的可以挂起的信号数
          -k  分配给此进程的最大 kqueue 数量
          -l  一个进程可以锁定的最大内存尺寸
          -m  最大的内存进驻尺寸
          -n  最多的打开的文件描述符个数
          -p  管道缓冲区尺寸
          -q  POSIX 信息队列的最大字节数
          -r  实时调度的最大优先级
          -s  最大栈尺寸
          -t  最大的CPU时间，以秒为单位
          -u  最大用户进程数
          -v  虚拟内存尺寸
          -x  最大的文件锁数量
          -P  最大伪终端数量
          -T  最大线程数量
        
        并非所有选项在所有系统上可用。
        
        如果提供了 LIMIT 变量，则它为指定资源的新的值；特别的 LIMIT 值为
        `soft'、`hard'和`unlimited'，分别表示当前的软限制，硬限制和无限制。
        否则打印指定资源的当前限制值，不带选项则假定为 -f
        
        取值都是 1024 字节为单位，除了 -t 以秒为单位，-p 以 512 字节递增，
        -u 为无范围的进程数量。
        
        退出状态：
        返回成功，除非使用了无效的选项或者错误发生。
        
[umask] 
    显示或设定文件模式掩码。
        
        设定用户文件创建掩码为 MODE 模式。如果省略了 MODE，则
        打印当前掩码的值。
        
        如果 MODE 模式以数字开头，则被当作八进制数解析；否则是一个
        chmod(1) 可接收的符号模式串。
        
        选项：
          -p  如果省略 MODE 模式，以可重用为输入的格式输入
          -S  以符号形式输出，否则以八进制数格式输出
        
        退出状态：
        返回成功，除非使用了无效的 MODE 模式或者选项。

[wait] 
    等待任务完成并返回退出状态。
        
        等待以 ID 编号识别的进程，其中 ID 可以是进程编号或者任务声明，
        并报告它的终止状态。如果 ID 没有给出，则等待所有的当前活跃子
        进程，并且返回状态为零。如果 ID 是任务声明，等待任务管道中的
        所有进程。
        
        若给定了 -n 选项，等待下一个任务完成并返回其状态。
        
        若给定了 -f 选项，且已启用了任务控制，则等待指定的 ID 终止
        而非等待它改变状态。
        退出状态：
        返回最后一个 ID 进程的状态；如果使用了无效的 ID 或者选项则失败。

[return] 
    从一个 shell 函数返回。
    
        使一个函数或者被引用的脚本以指定的返回值 N 退出。
        如果 N 被省略，则返回状态就是
        函数或脚本中的最后一个执行的命令的状态。
    
        退出状态：
        返回 N，或者如果 shell 不在执行一个函数或引用脚本时，失败。
        
[for] 
    为列表中的每个成员执行命令。
        
        “for”循环为列表中的每个成员执行一系列的命令。如果没有
        “in <词语> ...;”则假定使用“in \$@\”。对于 <词语> 中的每
         个元素，<名称> 变量被设定为该元素后执行 <命令>。
        
        退出状态：
        返回最后执行的命令的状态。

[select] 
    从列表中选取词并且执行命令。
        
        <词语...> 被展开，生成一个词的列表。展开的词集合被打印
        在标准错误输出设备上，每个以一个数字做前缀。如果没有 `in WORDS'
        则假定使用`in \$@\'。PS3提示符会被显示并且从标准输入读入一行
        如果该行由被显示的词对应的数字组成，则 NAME 变量被设定为相应
        的词。如果行为空，则 WORDS 变量和提示符被重新显示。如果读取了
        文件结束符，则命令完成。读入任何其他的值会导致 NAME 变量被设定
        为空。读入的行被存放在变量 REPLY 中。COMMANDS 命令在每次选择
        之后执行直到执行一个 break 命令。
        
        退出状态：
        返回最后一个执行的命令的状态。

[time] 
    报告管道执行的消耗时间。
        
        执行 PIPELINE 并且打印 PIPELINE 终结时实际时间、用户 CPU 时间和系统
        CPU 时间的总结。
        
        选项：
          -p  用可迁移的 POSIX 格式打印用时总结。
        
        TIMEFORMAT 变量的值被作为输出格式。
        
        退出状态：
        返回状态即PIPELINE 的返回状态。

[case] 
    基于模式匹配来执行命令。
        
        基于 PATTERN 模式匹配的词 WORD，有选择的执行 COMMANDS 命令。
        |' 用于分隔多个模式。
        
        退出状态：
        返回最后一个执行的命令的状态。
        
[if] 
    根据条件执行命令。
        
        `if COMMANDS'列表被执行。如果退出状态为零，则执行`then COMMANDS' 
        列表。否则按顺序执行每个 `elif COMMANDS'列表，并且如果它的退出状态为
        零，则执行对应的 `then COMMANDS' 列表并且 if 命令终止。否则如果存在的
        情况下，执行 `else COMMANDS'列表。整个结构的退出状态是最后一个执行
        的命令的状态，或者如果没有条件测试为真的话，为零。
        
        退出状态：
        返回最后一个执行的命令的状态。

[while] 
    只要测试成功即执行命令。
        
        只要在 `while' COMMANDS 中的最终命令返回结果为0，则
        展开并执行 COMMANDS 命令。
        
        退出状态：
        返回最后一个执行的命令的状态。

[until] 
    当测试不同过时执行命令。
        
        `until' COMMANDS 命令的最终命令返回状态不为 0 时，
        展开并执行 COMMANDS 命令。
        
        退出状态：
        返回最后一个执行的命令的状态。
        
[coproc]
    创建一个以 NAME 为名的副进程。
         
        异步执行 COMMANDS 命令，在执行 shell 中的数组变量 NAME
        的 0 号和 1 号元素作为文件描述符，以一个管道连接命令
        分别作为命令的标准输出和输入设备。
        默认的 NAME 是 \COPROC\。
        
        退出状态：
        副进程会返回退出状态 0。

[variables] 
    常用 shell 变量名称和使用。
        
        BASH_VERSION  当前 Bash 的版本信息。
        CDPATH  用于 `cd' 命令参数搜索的分号分隔的目录列表
        GLOBIGNORE  路径扩展时忽略的文件名匹配模式列表，
            以分号分隔。
        HISTFILE  您的命令历史存放的文件名称。
        HISTFILESIZE  历史文件最多可以保存的行数。
        HISTSIZE  一个运行的 shell 最多可以访问的历史命令行数。
        HOME  您的登录目录的完整路径。
        HOSTNAME  当前主机的主机名。
        HOSTTYPE  当前版本的 BASH 在其之上运行的 CPU 类型。
        IGNOREEOF  控制 shell 收到文件结束符作为单一输入后的
            动作。如果设定这个变量，则它的值是 shell 退出之前在
            一个空行上可以连续看到的文件结束符数量(默认为10)。
            未设定时，文件结束符标志着输入的结束。
        MACHTYPE  描述当前运行 Bash 的系统的字符串。
        MAILCHECK  Bash 检测新邮件的频率，以秒为单位。
        MAILPATH  Bash 从中检测新邮件的文件列表，以分号分隔。
        OSTYPE  运行 Bash 的 Unix 版本。
        PATH  当寻找命令时搜索的目录列表，以冒号分隔。
        PROMPT_COMMAND  打印每一个主提示符之前执行的命
            令。
        PS1    主提示符字符串。
        PS2    从提示符字符串。
        PWD    当前目录的完整路径。
        SHELLOPTS  已启用的 shell 选项列表，以冒号分隔。
        TERM  当前终端类型的名称。
        TIMEFORMAT  以关键则 `time' 显示的时间统计信息的输出
            格式。
        auto_resume  非空时，一个单独的命令词会首先被在当前
            停止的任务列表中搜索。如果找到则该任务被置于前台。
            如果值为 `exact' 则意味着命令词必须精确匹配停止任务
            列表中的命令。如果值为 `substring' 则意味着命令词必
            须匹配任务的一个子字符串。任何其他的值意味着命令词
            必须是停止任务的一个前缀。
        histchars  控制历史展开和快速替换的字符。第一个字符是
            历史替换字符，通常是 `!'。第二个字符是快速替换字符，
            通常是 `^'。第三个是历史注释字符，通常是 `#'。
        HISTIGNORE  用于决定哪些命令被存入历史文件的模式
            列表，以冒号分隔。
        
[pushd] 
    将目录添加到栈中。
        
        将目录添加到目录栈顶，或着旋转栈直到当前工作目录成为
        新的栈顶。不带参数时，交换栈顶的两个目录。
        
        选项：
          -n  抑制添加目录至栈时通常的改变目录操作，从而仅对栈
          进行操作。
        
        参数：
          +N  旋转栈从而第 N 个目录 (`dirs' 显示的列表中左起，从零开始)
          将移动到栈顶。
        
          -N  旋转栈从而第 N 个目录 (`dirs' 显示的列表中右起，从零开始)
          将移动到栈顶。
        
          dir  将 DIR 目录添加到栈顶，并且使其成为当前工作目录。
        
        `dirs' 内建显示目录栈。
        
        退出状态：
    
[popd] 
    从栈中删除目录。
        
        从目录栈中删除条目。不带参数时，删除栈顶目录，并改变至新的栈
        顶目录。
        
        选项：
          -n  抑制从栈中删除目录时通常的目录变换操作，从而仅对栈
          进行操作。
        
        参数：
          +N  删除第 N 个目录 (`dirs' 显示的目录列表中左起，从零开始)。
          例如：`popd +0' 删除第一个目录，`popd +1' 删除第二个。
        
          -N  删除第 N 个目录 (`dirs' 显示的目录列表中右起，从零开始)。
          例如：`popd -0' 删除最后一个目录，，`popd -1' 删除倒数第二个。
        
        `dirs' 内建显示目录栈。
        
        退出状态：
        返回成功，除非使用了无效的参数或者目录变换失败。

[dirs] 
    显示目录栈。
        
        显示当前记住的目录列表。通过 `pushd' 命令可以将目录存入列表
        中；`popd' 命令可用于遍历弹出列表。
        
        选项：
          -c  删除所有元素以清空目录栈
          -l  不打印与主目录相关的波浪号前缀的目录
          -p  每行一个条目打印目录栈
          -v  每行一个条目，以栈中位置为前缀打印目录栈
        
        参数：
          +N  显示 dirs 不带选项启动时显示的目录列表左起中第
          N 个目录，从零开始。
        
          -N  显示 dirs 不带选项启动时显示的目录列表右起中第
          N 个目录，从零开始。
        
        退出状态：
        返回成功，除非使用了无效的选项或者发生错误。
        
[printf] 
    在 FORMAT 的控制下格式化并打印 ARGUMENTS 参数。
        
        选项：
          -v var  将输出赋值给 shell 变量 VAR 而不显示在标准输出上
        
        FORMAT 是包含三种对象的字符串：简单地被拷贝到标准输出的普通字符；
        被变换之后拷贝到标准输入的转义字符；以及每个都会影响到下个参数的打印的格
        式化声明。
        
        在 printf(1) 中描述的标准控制声明之外，printf 解析：
        
          %b  扩展对应参数中的反斜杠转义序列
          %q  以可作为 shell 输入的格式引用参数
          %(fmt)T  以 FMT 为供给 strftime(3) 的格式输出日期时间字符串
        
        退出状态：
        返回成功，除非使用了无效的选项或者写或赋值错误发生。

[complete] 
    指定 Readline 如何补全参数。
        
        声明对于每一个 NAME 名称如何补全参数。如果不带选项，
        现有的补全声明会以可以重用为输入的格式打印出来。
        
        选项：
          -p  以可重用的格式打印现有的补全声明。
          -r  对于每个 NAME 名称删除补全声明，或者如果没有提供 NAME
          名称，删除所有的补全声明。
          -D  对于没有补全声明定义的命令，设定默认的补全动作
          -E  对于 \empty\ 命令设定补全动作，—— 对于空行的补全。
          -I  将补全和动作应用在首单词（通常是所给命令）上
        
        尝试补全时，按照上述大写字母选项的顺序进行动作。
        如果给出了多个选项，-D 选项优先级高于 -E 选项，且
        这两个选项优先级均高于 -I。
        
        退出状态：
        返回成功，除非使用了无效的选项或者错误发生。

[compgen] 
    依据选项显示可能的补全。
        
        意图在能产生可能的补全的 shell 函数内部使用。
        如果提供了可选的 WORD 参数，则产生按照 WORD
        进行的匹配。
        
        退出状态：
        除非使用了无效选项或者错误发生，否则返回成功。

[compopt] 
    修改或显示补全选项。
        
        修改每个 NAME 名称的补全选项，或如果没有提供 NAME 名称，执行当前的补
        全。
        如果不带选项，打印每个 NAME 名称的补全选项或当前的补全声明。
        
        选项：
          -o option  为每个 NAME 名称设定补全选项 option
          -D    为 \default\ 命令补全改变选项
          -E    为 \empty\ 命令补全改变选项
          -I    为首单词的补全改变选项
        
        使用 `+o' 而不是 `-o' 可以关闭指定的选项。
        
        参数：
        
        每个 NAME 名称都对应一个之前以通过 `complete' 内建定义了的补全声明的
        命令。如果不提供 NAME 名称，当前生成补全的函数必须调用 compopt，
        并且当前执行的补全生成器选项会被修改。
        
        退出状态：
        返回成功，除非使用了无效的选项或者 NAME 名称没有定义补全声明。

[mapfile]
    从标准输入读取行到下标数组变量中。
        
        从标准输入读取行到下标数组变量 ARRAY 中，或者如果使用了 -u 选项，
        从文件描述符 FD 中读取。MAPFILE 变量是默认的 ARRAY 变量。
        
        选项：
          -d delim  使用 DELIM 而非换行符断行
          -n count  最多拷贝 COUNT 行，如果 COUNT 为 0，则拷贝所有行。
          -O origin  从下标 ORIGIN 开始 赋值给 ARRAY 变量。默认下标是0.
          -s count   丢弃最先读取的 COUNT 行。
          -t    从读取的每行末尾删除一个换行符。
          -u fd    从文件描述符 FD 中读取行而不是标准输入。
          -C callback  每 QUANTUM 次读行之后对 CALLBACK 回调进行估值。
          -c quantum  定义每次调用 CALLBACK 回调之间读取的行数。
        
        参数：
          ARRAY    存储数据使用的数组变量
        
        如果使用了 -C 而没有 -c，默认的量子是5000。当对 CALLBACK 估值时，
        下一个将被赋值的数组元素的下标作为额外参数被传递。
        
        如果没有显式指定起始下标，mapfile 将在赋值前清空 ARRAY 变量。
        
        退出状态：
        返回成功，除非使用了无效的选项，或者 ARRAY 变量只读或不是下标数组。

[readarray] 
    从一个文件中读取行到数组变量中。
            一个 `mapfile'的同义词。

[unset] 
    取消设定 shell 变量和函数的值和属性。
        对每一个 NAME 名称，删除对应的变量或函数。
        
        选项：
          -f  将每个 NAME 视为函数
          -v  将每个 NAME 视为变量
          -n  将每个 NAME 视为名称引用，只取消其本身而非其指向的变量
        
        不带选项时，unset 首先尝试取消设定一个变量，如果失败，再尝试取消设定一个
        函数。
        
        某些变量不可以被取消设定；参见 `readonly'。
        
        退出状态：
        返回成功，除非使用了无效的选项或者 NAME 名称为只读。
    
[local] 
    记住或显示程序位置。
        
        确定并记住每一个给定 NAME 名称的命令的完整路径。
        如果不提供参数，则显示已经记住的命令的信息。
        
        选项：
          -d  忘记每一个已经记住的 NAME 的位置
          -l  以可作为输入重用的格式显示
          -p pathname 使用 pathname 路径作为 NAME 命令的全路径
          -r  忘记所有记住的位置
          -t  打印记住的每一个 NAME 名称的位置，如果指定了多个
          NAME 名称，则每个位置前面会加上相应的 NAME 名称
          
        参数：
          NAME  每个 NAME 名称会在 $PATH 路径变量中被搜索，并且添加到记住的命
        令
        列表中。
        
        退出状态：
        返回成功，除非 NAME 命令没有找到或者使用了无效的选项。
        返回成功，除非使用了无效的选项或者 NAME 名称为只读。

[export] 
    为 shell 变量设定导出属性。
    
        标记每个 NAME 名称为自动导出到后续命令执行的环境。如果提供了 VALUE
        则导出前将 VALUE 作为赋值。
        
        选项：
          -f 指 shell 函数
          -n 删除每个 NAME 名称的导出属性
          -p 显示所有导出的变量和函数的列表
        
        `--' 的参数禁用进一步的选项处理。
        
        退出状态：
        返回成功，除非使用了无效的选项或者 NAME 名称。

[readonly] 
    标记 shell 变量为不可改变。
    
        标记每一个 NAME 名称为只读；这些 NAME 变量的值将不可以被后续的赋值
        操作所改变。如果提供了 VALUE，则在标记为只读之前将 VALUE 值赋给变量。
        
        选项：
          -a 指下标数组变量
          -A 指关联数组标量
          -f 指 shell 函数
          -p 显示只读变量或函数列表，取决于是否提供了 -f 选项
        
        `--' 的参数禁用进一步的选项处理。
        
        退出状态：
        返回成功，除非使用了无效的选项或者 NAME 名称。

[declare]   
    设定变量值和属性。
    
        声明变量并且赋予它们属性。如果没有给定名称，
        则显示所有变量的属性和值。
        
         选项：
          -f        限制动作或显示为仅函数名称和定义
          -F        限制仅显示函数名称 (以及调试时显示行号和源文件名)
          -g        当用于 shell 函数内时创建全局变量; 否则忽略
          -p        显示每个 NAME 变量的属性和值
         
         设定属性的选项：
          -a        使 NAME 成为下标数组 (如果支持)
          -A        使 NAME 成为关联数组 (如果支持)
          -i        使 NAME 带有 `integer' (整数)属性
          -l        将 NAME 在赋值时转为小写
          -n        使 NAME 成为指向一个以其值为名称的变量的引用
          -r        将 NAME 变为只读
          -t        使 NAME 带有 `trace' (追踪)属性
          -u        将每个 NAME 在赋值时转为大写
          -x        将 NAME 导出
        
         用 `+' 代替 `-' 会关闭指定选项。
        
          带有整数属性的变量在赋值时将使用算术估值(见
         `let' 命令)
        
        在函数中使用时，`declare' 使 NAME 成为本地变量，和 `local'
        命令一致。`-g' 选项抑制此行为。
        
        退出状态：
        返回成功，除非提供了无效选项或者发生变量赋值错误

[function] 
    定义 shell 函数。
    
        创建一个以 NAME 为名的 shell 函数。当作为一个简单的命令启用时，
        NAME 函数执行调用 shell 的上下文中的 COMMANDs 命令。当 NAME
        被启用时，参数作为 $1...$n 被传递给函数，函数的名字储存在变量
        $FUNCNAME 中。
        
        退出状态：
        返回成功除非 NAME 为只读。

[typeset] 
    设置变量的值和属性。
    
        `declare'  的等价形式。参见 `help declare'。

[source] 
    在当前 shell 中执行一个文件中的命令。
    
        在当前 shell 中读取并执行 FILENAME 文件中的命令。$PATH 变量中的
        条目被用于寻找包含 FILENAME 文件的目录。如果提供了任何的 ARGUMENTS
        参数，则它们将成为 FILENAME 文件执行时的位置参数。
        
        退出状态：
        返回 FILENAME 文件中最后一个命令的状态；如果 FILENAME 文件不可读则失败。
   
[bind]
    设定 Readline 键绑定和变量。
    
        绑定一个键序列到一个 Readline 函数或者宏，或者设定一个
        Readline 变量。非选项参数的语法和 ~/.inputrc 文件中的等
        同，但是必须作为一个参数被传递，
        例如，bind '\\\C-x\\C-r\: re-read-init-file'.
        
        选项：
          -m  键映射      在此命令执行过程中使用指定的键映射。
                         可被接受的键映射名字有 emacs、emacs-standard、emacs-
                         meta、
                         emacs-ctlx、vi、vi-move、vi-command、和 vi-insert。
          -l             列出函数名称。
          -P             列出函数名称和绑定。
          -p             以可以重新用作输入的格式列出函数名称和绑定。
          -S             列出可以启动宏的键序列以及它们的值
          -s             以可以重新用作输入的格式列出可以启动宏的键以及它们的
                         值。
          -V             列出变量名成和它们的值
          -v             以可以重新用作输入的格式列出变量的名称和它们的值
          -q  函数名      查询指定的函数可以由哪些键启动。
          -u  函数名      反绑定所有绑定至指定函数的键。
          -r  键序列      取消指定键序列的绑定。
          -f  文件名      从指定文件中读取键绑定。
          -x  键序列:shell命令\t当指定的键序列被输入时，执行指定的 shell 命令。
          -X             以可被重用的形式列出用 -x 绑定的键序列和命令。
        
        退出状态：
        除非使用了无法辨认的选项或者错误发生，否则返回0.

[test] 
    估值算术表达式。
    
        将每个 ARG 参赛作为算术表达式来估值。估值的计算以定宽的整
        数完成，不带溢出检测，不过除 0 是被置陷阱的并且会报一个错
        误。下列操作符被按照相同的算术优先级组合。列表的顺序按照
        优先级从高至低。
        
        
            id++, id--       变量后置加，后置减
            ++id, --id       变量前置加，前置减
            -, +             一元减法，一元加法
            !, ~             逻辑和位取反
            '**'             指数
            '*', /, %        乘法，除法，取余数
            +, -             增加，减少
            <<, >>           向左和向右按位移位
            <=, >=, <, >     比较
            ==, !=           等于，不等于
            &                按位与
            ^                按位异或
            |                按位或
            &&               逻辑与
            ||               逻辑或
            expr ? expr : expr
                             条件操作符
            =, *=, /=, %=,
            +=, -=, <<=, >>=,
            &=, ^=, |=        赋值

        
        Shell 变量允许作为操作数。表达式中的变量的名称会被取代以值
        (强制转换为定宽的整数)。表达式中的变量不需要打开整数属性。
        
        操作符按照优先级进行估值。括号中的子表达式将被先估值，并可取代上述表达式
        规则。
        
        退出状态：
        如果最后一个 ARG 参数估值为 0，则 let 返回 1； 否则 let 返回 0。

*[other] 显示其他命令帮助信息 .
}

helpname = {
$cmdName ->
[command0] {" % - 在前台继续任务"}
[command1] {"(( - 估值条件表达式。"}
[command2] {". 文件名 [参数]"}
[command3] {":"}
[command4] {"[ 参数... ]"}
[command5] {"[[ 表达式 ]]"}
[command6] {"for (( - 算术 for 循环。"}
[command7] 将命令组合为一个单元。
[set]  set - 设定或取消设定 shell 选项和位置参数的
[read] read - 从标准输入读取一行并将其分为不同的域。
[type] type - 显示命令类型的信息。
[trap] trap - 对信号和其他事件设陷阱。
[alias] alias - 定义或显示别名。
[unalias] unalias - 从别名定义列表中删除每一个“名字”。
[break] break - 退出 for、while 或 until 循环
[continue] continue - 继续 for、while 或 until 循环。
[builtin] builtin - 执行 shell 内建。
[caller] caller - 返回当前子调用的上下文。
[cd] cd - 改变 shell 工作目录。
[pwd] pwd - 打印当前工作目录的名字。
[true] true - 空的命令。
[shopt] shopt - 设定和取消设定 shell 选项。
[false] false - 返回一个不成功的结果。
[command] command - 执行一个简单命令或者显示命令的相关信息。
[echo] echo - 将参数写到标准输出。
[enable] enable - 启用和禁用 shell 内建。
[getopts] getopts - 解析选项参数。
[exec] exec - 使用指定命令替换 shell。
[exit] exit - 退出shell。
[logout] logout - 退出一个登录 shell.
[fc] fc - 从历史列表中显示或者执行命令。
[fg] fg - 将任务移至前台。
[bg] bg - 移动任务至后台。
[hash] hash - 记住或显示程序位置。
[help] help - 显示内建命令的相关信息。
[history] history - 显示或操纵历史列表。
[jobs] jobs - 显示任务状态。
[disown] discow - 从当前 shell 中删除任务。
[kill] kill - 向一个任务发送一个信号。
[let] let - 估值算术表达式。
[shift] shift - 移位位置参数。
[suspend] suspend - 挂起 shell 执行。
[eval] eval - 对条件表达式进行估值。
[times] times - 显示进程时间
[ulimit] limit - 修改 shell 资源限制。
[umask] umask - 显示或设定文件模式掩码。
[return] return - 等待任务完成并返回退出状态。
[wait] wait - 等待进程完成并且返回退出状态。
[for] for - 为列表中的每个成员执行命令。
[select] select - 从列表中选取词并且执行命令。
[time] time - 报告管道执行的消耗时间。
[case] case - 基于模式匹配来执行命令。
[if] if - 根据条件执行命令。
[while] while - 只要测试成功即执行命令。
[until] until -当测试不同过时执行命令
[coproc] corproc - 创建一个以 NAME 为名的副进程。
[variables] variables - 常用 shell 变量名称和使用。
[pushd] pushd - 将目录添加到栈中。
[popd] popd - 从栈中删除目录。
[dirs] dirs - 显示目录栈。
[printf] printf -在 FORMAT 的控制下格式化并打印 ARGUMENTS 参数。
[complete] complete - 指定 Readline 如何补全参数。
[compgen] compgen - 依据选项显示可能的补全。
[compopt] compopt - 修改或显示补全选项。
[mapfile] mapfile - 从标准输入读取行到下标数组变量中。
[unset] unset - 取消设定 shell 变量和函数的值和属性。
[readarray] readarry - 从一个文件中读取行到数组变量中。
[local] local -记住或显示程序位置。
[export] export -为 shell 变量设定导出属性。
[readonly] readonly - 标记 shell 变量为不可改变。
[function] function - 定义 shell 函数。
[typeset] typeset - 设置变量的值和属性。
[source] source - 在当前 shell 中执行一个文件中的命令。
[bind] bind - 设定 Readline 键绑定和变量。
[test] test - 估值算术表达式。
[declare] declare - 设置变量的值和属性。
*[other] 显示其他命令帮助信息 .
}

helpsynopsis = {
$cmdName ->
[command0] {"job_spec [&]"}
[command1] {"(( - "}
[command2] {". - 在当前 shell 中执行一个文件中的命令。"}
[command3] {": - 空的命令。"}
[command4] {"[ - 估值条件表达式。"}
[command5] {"[[ ... ]] - 执行条件命令。"}
[command6] {"for (( 表达式1; 表达式2; 表达式3 )); do 命令 ; done"}
[command7] {"{ 命令 ; }"}
[set]   {"set [--abefhkmnptuvxBCHP][-o 选项名][--][参数 ...]"}
[read]  {"read [-ers] [-a 数组] [-d 分隔符] [-i 缓冲区文字] [-n 读取字符数] [-N 读取字符数] [-p 提示符] [-t 超时] [-u 文件描述符] [名称 ...]"}
[type]  {"type [-afptP] 名称 [名称 ...]"}
[trap]  {"trap: trap [-lp] [[参数] 信号声明 ...]"}
[alias] {"alias [-p] [名称[=值] ... ]"}
[unalias] {"unalias [-a] 名称 [名称 ...] "}
[break] {"break [n]"}
[continue] {"continue [n]"}
[builtin] {"builtin [shell 内建 [参数 ...]] "}
[caller] {"caller [表达式] "}
[cd] {"cd [-L|[-P [-e]] [-@]] [目录]"}
[pwd] {"pwd [-LP]"}
[true] {"true"}
[shopt] {"shopt [-pqsu] [-o] [选项名 ...]"}
[false] {"false"}
[command] {"command [-pVv] 命令 [参数 ...]"}
[echo] {"echo [-neE] [参数 ...]"}
[enable] {"enable [-a] [-dnps] [-f 文件名] [名称 ...] "}
[getopts] {"getopts 选项字符串 名称 [参数]"}
[exec] {"exec [-cl] [-a 名称] [命令 [参数 ...]] [重定向 ...] "}
[exit] {"exit [n]"}
[logout] {"logout [n]"}
[fc] {"fc [-e 编辑器名] [-lnr] [起始] [终结] 或 fc -s [模式=替换串] [命令]"}
[fg] {"fg [任务声明] "}
[bg] {"bg [任务声明 ...]"}
[hash] {"hash [-lr] [-p 路径名] [-dt] [名称 ...]"}
[help] {"help [-dms] [模式 ...]"}
[history] {"history [-c] [-d 偏移量] [n] 或 history -anrw [文件名] 或 history -ps 参数 [参数...]"}
[jobs] {"jobs [-lnprs] [任务声明 ...] 或 jobs -x 命令 [参数]"}
[disown] {"disown [-h] [-ar] [任务声明 ... | pid ...]"}
[kill] {"kill [-s 信号声明 | -n 信号编号 | -信号声明] 进程号 | 任务声明 ... 或 kill -l [信号声明]"}
[let] {"let 参数 [参数 ...]"}
[shift] {"shift [n]"}
[suspend] {"suspend [-f]"}
[eval] {"eval [参数 ...]"}
[times] {"times"}
[ulimit] {"ulimit [-SHabcdefiklmnpqrstuvxPT] [限制]"}
[umask] {"umask [-p] [-S] [模式]"}
[return] {"return [n]"}
[wait] {"wait [-fn] [编号 ...]"}
[for] {"for 名称 [in 词语 ... ] ; do 命令; done"}
[select] {"select NAME [in 词语 ... ;] do 命令; done"}
[time] {"time [-p] 管道"}
[case] {"case 词 in [模式 [| 模式]...) 命令 ;;]... esac"}
[if] {"if 命令; then 命令; [ elif 命令; then 命令; ]... [ else 命令; ] fi"}
[while] {"while 命令; do 命令; done"}
[until] {"until 命令; do 命令; done"}
[coproc] {"coproc [名称] 命令 [重定向]"}
[variables] {"variables - 一些 shell 变量的名称和含义"}
[pushd] {"pushd [-n] [+N | -N | 目录]"}
[popd] {"popd [-n] [+N | -N]"}
[dirs] {"dirs [-clpv] [+N] [-N]"}
[printf] {"printf [-v var] 格式 [参数]"}
[complete] {"complete [-abcdefgjksuv] [-pr] [-DEI] [-o 选项] [-A 动作] [-G 全局模式]   [-W 词语列表]  [-F 函数] [-C 命令] [-X 过滤模式] [-P 前缀] [-S 后缀] [名称 ...]"}
[compgen] {"compgen [-abcdefgjksuv] [-o 选项]  [-A 动作] [-G 全局模式] [-W 词语列表]  [-F 函数]  [-C 命令] [-X 过滤模式] [-P 前缀] [-S 后缀] [词语]"}
[compopt] {"compopt [-o|+o 选项] [-DEI] [名称 ...]"}
[mapfile] {"mapfile [-d 分隔符] [-n 计数] [-O 起始序号] [-s 计数] [-t] [-u fd] [-C 回调] [-c 量子] [数组]"}
[unset] {"unset [-f] [-v] [-n] [名称 ...]"}
[readarray] {"readarray [-d 定界符] [-n 计数] [-O 起始序号] [-s 计数] [-t] [-u fd] [-C 回调] [-c 量子] [数组]"}
[local] {"local [option] 名称[=值] ... "}
[export] {"export [-fn] [名称[=值] ...] 或 export -p"}
[readonly] {"readonly [-aAf] [名称[=值] ...] 或 readonly -p"}
[function] {"function 名称 { 命令 ; } 或 name () { 命令 ; } "}
[typeset] {"typeset [-aAfFgilnrtux] [-p] 名称[=值] ..."}
[source] {"source 文件名 [参数]"}
[bind] {"bind [-lpvsPSVX] [-m 键映射] [-f 文件名] [-q 名称] [-u 名称] [-r 键序列] [-x 键序列:shell-命令]  [键序列:readline-函数 或 readline-命令] "}
[test] {"test [表达式]"}
[declare] {"declare [-aAfFgilnrtux] [-p] [名称[=值] ...]"}
*[other] 显示其他命令帮助信息 .
}

information =      这些 shell 命令是内部定义的。请输入 `help' 以获取一个列表。
      输入 `help 名称' 以得到有关函数`名称'的更多信息。
      使用 `info bash' 来获得关于 shell 的更多一般性信息。
      使用 `man -k' 或 `info' 来获取不在列表中的命令的更多信息。

helperr = 没有与{$name}匹配的帮助主题。尝试使用"help help"、"man -k {$name} 或 "info {$name}"。

is =  {$str1} 是 {$str2}
special = {$str1} 是特殊 shell 内建 
hashd =  {$str1} 已被录入哈希表 
isfunction = {$str1}是函数 
iskeyword = {$str1} 是 shell 关键字
isalias = {$str1} 是 {$str2} 的别名
isbuiltin = {$str1} 是 shell 内建
killargerr = {$str1} : 参数必须是进程或任务 ID
letwarn = utshell : let : 需要表达式
bindvia = {$str1} 可以被调用， 通过 
bindnokeys = {$str1}未与任何键绑定。
unknowdfunction = {$str1} : 未知函数名
unbindfaild = {$str1} : 无法解除绑定
invaildmap = {$str1} : 无效的键映射名
logout = 注销
nologinsh = 不是登录 shell: 使用 'exit'
stoppedjobs = 有停止的任务
runjobs = 有运行中的任务
